<?php
// +----------------------------------------------------------------------
// | sfadmin - Suifeng Administration
// +----------------------------------------------------------------------
// | Copyright (c) 2017-2020 http://suifeng.tech All rights reserved.
// +----------------------------------------------------------------------
// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
// +----------------------------------------------------------------------
// | Author: suifeng <1787585212@qq.com>
// +----------------------------------------------------------------------

namespace app\admin\model;

use suifeng\Model;

class Config extends Model
{
    /**
     * 数据表名。
     */
    protected $name = 'admin_config';

    /**
     * 获取缓存的配置列表。
     *
     * @return array
     */
    public function get_cached_list()
    {
        $list = cache('model_admin_config::get_cached_list');

        if (!$list || APP_DEBUG) {
            $where['status'] = array('eq', 1);
            $order = 'sort asc, id asc';

            $rows = $this->where($where)
                ->order($order)
                ->select();

            $list = array();
            foreach ($rows as $row) {
                if ($row['control'] == 'checkbox') {
                    $row['value'] = explode(',', $row['value']);
                } else if ($row['control'] == 'textarea' && $row['is_array']) {
                    $row['value'] = helper('admin/str')->parseAttr($row['value']);
                } else {
                    $row['value'] = $row['value'];
                }
                $list[$row['name']] = $row->getData();
            }

            cache('model_admin_config::get_config_list', $list);
        }

        return $list;
    }

    /**
     * 获取缓存的配置数组。
     *
     * @return unknown[]
     */
    public function get_cached_array()
    {
        $list = cache('model_admin_config::get_config_array');

        if (!$list || APP_DEBUG) {
            $array = array();

            foreach ($this->get_cached_list() as $row) {
                $array[$row['name']] = $row['value'];
            }

            cache('model_admin_config::get_config_array', $array);
        }

        return $array;
    }

    /**
     * 清除缓存的配置信息。
     */
    public function clear_cache()
    {
        cache('model_admin_config::get_config_list', null);
        cache('model_admin_config::get_config_array', null);
    }







//     /**
//      * 获取配置列表与ThinkPHP配置合并。
//      *
//      * @return array 配置数组
//      */
//     public function lists()
//     {
//         $map['status'] = array('eq', 1);
//         $list = $this->where($map)->field('name,value,control,is_array')->select();
//         foreach ($list as $key => $val) {
//             if ($val['control'] == 'checkbox') {
//                 $config[$val['name']] = explode(',', $val['value']);
//             } else if ($val['control'] == 'textarea' && $val['is_array']) {
//                 $config[$val['name']] = \suifeng\helper\StringHelper::parseAttr($val['value']);
//             } else {
//                 $config[$val['name']] = $val['value'];
//             }
//         }
//         return $config;
//     }

//     /**
//      * 获取列表。
//      */
//     public function fetch_list($group, $where = null, $order = null, $page = 1, $limit = 10)
//     {
//         $where['status'] = array('eq', '1');
//         $where['group'] = array('eq', $group);
//         $order = $order ?: 'sort desc, id desc';

//         $list = $this->page($page, $limit)
//             ->order($order)
//             ->where($where)
//             ->select();

//         return $list;
//     }

//     /**
//      * 获取数组。
//      */
//     public function fetch_array()
//     {
//         $where['status'] = array('eq', 1);

//         $list = $this->where($where)
//             ->field('name,value,control,is_array')
//             ->select();

//         foreach ($list as $key => $val) {
//             if ($val['control'] == 'checkbox') {
//                 $config[$val['name']] = explode(',', $val['value']);
//             } else if ($val['control'] == 'textarea' && $val['is_array']) {
//                 $config[$val['name']] = \suifeng\helper\StringHelper::parseAttr($val['value']);
//             } else {
//                 $config[$val['name']] = $val['value'];
//             }
//         }

//         return $config;
//     }
}
